<?php
/************************************************************************************************
 * 																								*
 * Autor: Dariusz Janik																			*
 * Data utworzenia: 3.11.2012																	*
 * Data ostatniej modyfikacji: 5.12.2012														*
 * 																								*
 * Wywołanie odpowiednich metod w zależności od parametrów get, post dotyczących:				*
 * usuwania, dodawania, edycji węzłów oraz wyświetlania drzew									*
 * 																								*
 * Korzysta z obiektów klas: Drzewo, Formularz, BazaDanych										*
 * 																								*
 * Lokalizacja pliku: include/tree.php															*
 * 																								*
 ************************************************************************************************/

require_once 'klasy/drzewo.php';
require_once 'klasy/formularz.php';
require_once 'klasy/bazaDanych.php';

$baza=new BazaDanych();

if(isset($_GET['akcja']) && isset($_GET['id']))
{
	if($_GET['akcja']=='usunWezel')
	{	
		if(!$baza->usunWezel($_GET['id'], $_SESSION['login']))
			echo '<p class="blad">Nie udało się usunąć węzła</p>';
		unset($_GET['id']);
	}
	else if($_GET['akcja']=='oderwijWezel')
	{
		if(!$baza->oderwij($_SESSION['login'], $_GET['id']))
			echo '<p class="blad">Nie udało się oderwać węzła</p>';
	}
}

if(isset($_GET['form']) && isset($_GET['id']))
{
	if($_GET['form']=='dodajPartnera')
	{
		$wez=$baza->zwrocWezel($_GET['id']);
		if($wez!==null)
		{
			$istWezly=$baza->zwrocWezlyUzytkownika($_SESSION['login'], 1, $wez);
			//przypisanie danych początkowych
			$plec=!$wez->getOsoba()->getPlec();
			if($plec) 
			{ 
				$nazwaFormularza='Dane męża'; $przycisk='Dodaj męża'; 
				if($wez->getOsoba()->getNazwPanien()!=null)
						$nazwisko=$wez->getOsoba()->getNazwisko();
				else $nazwisko=null;
			}
			else { $nazwaFormularza='Dane żony'; $przycisk='Dodaj żonę'; $nazwisko=$wez->getOsoba()->getNazwisko();}
			$minRok=$wez->getOsoba()->getRokUr()-Wezel::$roznicaWiekuPartnerow;
			$maxRok=$wez->getOsoba()->getRokUr()+Wezel::$roznicaWiekuPartnerow;
			
			$oso=new Osoba(-1, null, $nazwisko, null, null, $plec, null, null, null);
			
			//tworzenie formularza
			$formularz=new Formularz(0, '?tree&form=dodajPartnera&id='.$_GET['id'], $przycisk, '?tree&id='.$_GET['id'], $_POST, $oso, $nazwaFormularza, null, null, $istWezly);
			$formularz->setMinRok($minRok);
			$formularz->setMaxRok($maxRok);
			$formularz->setDomyslnyRok($wez->getOsoba()->getRokUr());
			if(!isset($_POST['wyslij']))								//Pierwsze wywołanie formularza
				echo $formularz->generujFormularz();
			else 														//odebrano dane z formularza
			{
				if(isset($_POST['tryb']) && $_POST['tryb']==1)				//obsługa dodawania istniejących węzłów
				{
					$we=$baza->zwrocWezel($_POST['id']);
					
					if($wez->getModerator()==$_SESSION['login'] || $user->CzyAdmin($_SESSION['login']))		//moderator lub admin
					{
						if(!$baza->dodajPartnera($we, $_GET['id'], $_SESSION['login']))
							echo '<p class="blad">Nie udało się dodać partnera</p>';
						else
							unset($_GET['form']);
					}
					else
					{
						if(!$baza->wyslijDoAkceptacji($we->getId(), 1, $wez->getId()))
							echo '<p class="blad">Nie udało się wysłać propozycji dodania partnera</p>';
						else
						{
							echo '<p class="sukces">Element będzie dodany po akceptacji przez użytkownika: '.$wez->getModerator().'</p>';
							unset($_GET['form']);
						}
							
					}
				}
				else
				{
					if(($bledy=$formularz->waliduj())!==true)				//sprawdzenie poprawności danych
						echo $bledy.$formularz->generujFormularz();
					else																						//Dane poprawne, wykonanie akcji
					{
						$os=$formularz->zwrocOsobe();
						$we=new Wezel(-1, null, $_SESSION['login'], $os);

						if($wez->getModerator()==$_SESSION['login'] || $user->CzyAdmin($_SESSION['login']))		//moderator lub admin
						{
							if(!$baza->dodajPartnera($we, $_GET['id'], $_SESSION['login']))
								echo '<p class="blad">Nie udało się dodać partnera</p>';
							else
								unset($_GET['form']);
						}
						else 
						{
							$idNowy=$baza->dodajWezel($we);
							if($idNowy)
							{
								if(!$baza->wyslijDoAkceptacji($idNowy, 1, $wez->getId()))
									echo '<p class="blad">Nie udało się wysłać propozycji dodania partnera</p>';
								else
								{
									echo '<p class="sukces">Element będzie dodany po akceptacji przez użytkownika: '.$wez->getModerator().'</p>';
									unset($_GET['form']);
								}
							}
						}
						
					}
				}
			}
		}
		else 
			echo '<p class="blad">Nie znaleziono węzła o podanym ID</p>';
	}
	
	else if($_GET['form']=='dodajDziecko')
	{
		$wez=$baza->zwrocWezel($_GET['id']);
		if($wez!==null)
		{
			$istWezly=$baza->zwrocWezlyUzytkownika($_SESSION['login'], 2, $wez);
			//przypisanie danych początkowych
			if($wez->getPartner()!==null && $wez->getPartner()->getOsoba()->getPlec())
				$nazwisko=$wez->getPartner()->getOsoba()->getNazwisko();
			else 
				$nazwisko=$wez->getOsoba()->getNazwisko();
			$nazwaFormularza='Dane dziecka'; 
			$przycisk='Dodaj dziecko';
			
			$oso=new Osoba(-1, null, $nazwisko, null, null, null, null, null, null);
			
			//tworzenie formularza
			$formularz=new Formularz(0, '?tree&form=dodajDziecko&id='.$_GET['id'], $przycisk, '?tree&id='.$_GET['id'], $_POST, $oso, $nazwaFormularza, null, null, $istWezly);
			if($wez->getPartner()!==null)
			{
				if($wez->getOsoba()->getRokUr()>$wez->getPartner()->getOsoba()->getRokUr()) { $mr=$wez->getPartner()->getOsoba()->getRokUr(); $wr=$wez->getOsoba()->getRokUr(); }
				else { $mr=$wez->getOsoba()->getRokUr(); $wr=$wez->getPartner()->getOsoba()->getRokUr(); }
				$minRok=$wr+Wezel::$minRoznPokolen;
				$maxRok=$mr+Wezel::$maxRoznPokolen;
				if($minRok+20<$maxRok)
					$formularz->setDomyslnyRok($minRok+20);
				$formularz->setMinRok($minRok);
				$formularz->setMaxRok($maxRok);
			}
			if(!isset($_POST['wyslij']))								//Pierwsze wywołanie formularza
				echo $formularz->generujFormularz();
			else 														//odebrano dane z formularza
			{
				if(isset($_POST['tryb']) && $_POST['tryb']==1)				//obsługa dodawania istniejących węzłów
				{
					$we=$baza->zwrocWezel($_POST['id']);
					
					if($wez->getModerator()==$_SESSION['login'] || $user->CzyAdmin($_SESSION['login']))		//moderator lub admin
					{
						if(!$baza->dodajDziecko($we, $_GET['id'], $_SESSION['login']))
							echo '<p class="blad">Nie udało się dodać dziecka</p>';
						else
							unset($_GET['form']);
					}
					else
					{
						if(!$baza->wyslijDoAkceptacji($we->getId(), 2, $wez->getId()))
							echo '<p class="blad">Nie udało się wysłać propozycji dodania dziecka</p>';
						else
						{
							echo '<p class="sukces">Element będzie dodany po akceptacji przez użytkownika: '.$wez->getModerator().'</p>';
							unset($_GET['form']);
						}
					}
				}
				else
				{
					if(($bledy=$formularz->waliduj())!==true)				//sprawdzenie poprawności danych
						echo $bledy.$formularz->generujFormularz();
					else																						//Dane poprawne, wykonanie akcji
					{
						$os=$formularz->zwrocOsobe();
						$we=new Wezel(-1, null, $_SESSION['login'], $os);
							
						if($wez->getModerator()==$_SESSION['login'] || $user->CzyAdmin($_SESSION['login']))		//moderator lub admin
						{
							if(!$baza->dodajDziecko($we, $_GET['id'], $_SESSION['login']))
								echo '<p class="blad">Nie udało się dodać dziecka</p>';
							else
								unset($_GET['form']);
						}
						else
						{
							$idNowy=$baza->dodajWezel($we);
							if($idNowy)
							{
								if(!$baza->wyslijDoAkceptacji($idNowy, 2, $wez->getId()))
									echo '<p class="blad">Nie udało się wysłać propozycji dodania dziecka</p>';
								else
								{
									echo '<p class="sukces">Element będzie dodany po akceptacji przez użytkownika: '.$wez->getModerator().'</p>';
									unset($_GET['form']);
								}
							}
						}
							
					}
				}
			}
		}
		else 
			echo '<p class="blad">Nie znaleziono węzła o podanym ID</p>';
	}
	
	else if($_GET['form']=='dodajRodzicow')
	{
		$wez=$baza->zwrocWezel($_GET['id']);
		if($wez!==null)
		{
			$istWezly=$baza->zwrocWezlyUzytkownika($_SESSION['login'], 0, $wez);
			//przypisanie danych początkowych
			$nazwisko=$wez->getOsoba()->getNazwisko();
			$nazwaFormularza1='Dane ojca';
			$nazwaFormularza2='Dane matki';
			$przycisk='Dodaj rodziców';
			if($wez->getOsoba()->getPlec()) { $nazwisko=$wez->getOsoba()->getNazwisko();}
			else {														//jeżeli kobieta ma nazwisko panieńskie to wpisz rodzicom, jak nie to nazwisko
				if($wez->getOsoba()->getNazwPanien()!=null)
					$nazwisko=$wez->getOsoba()->getNazwPanien();
				else 
					$nazwisko=$wez->getOsoba()->getNazwisko();
			}
			$maxRok=$wez->getOsoba()->getRokUr()-Wezel::$minRoznPokolen;
			$minRok=$wez->getOsoba()->getRokUr()-Wezel::$maxRoznPokolen;
			$domyslny=$wez->getOsoba()->getRokUr()-30;
			
			
			$oso1=new Osoba(-1, null, $nazwisko, null, null, true, null, null, null);
			$oso2=new Osoba(-1, null, $nazwisko, null, null, false, null, null, null);
			
			//tworzenie formularza
			$formularz=new Formularz(1, '?tree&form=dodajRodzicow&id='.$_GET['id'], $przycisk, '?tree&id='.$_GET['id'], $_POST, $oso1, $nazwaFormularza1, $oso2, $nazwaFormularza2, $istWezly);
			$formularz->setMaxRok($maxRok);
			$formularz->setMinRok($minRok);
			if($domyslny>$minRok && $domyslny<$maxRok)
				$formularz->setDomyslnyRok($domyslny);
			if(!isset($_POST['wyslij']))								//Pierwsze wywołanie formularza
				echo $formularz->generujFormularz();
			else 														//odebrano dane z formularza
			{
				if(isset($_POST['tryb']) && $_POST['tryb']==1)				//obsługa dodawania istniejących węzłów
				{
					$we=$baza->zwrocWezel($_POST['id']);
					if($we->getOsoba()->getPlec())			//przypisanie istniejących węzłów jako ojciec i matka
					{
						$we1=$we;
						$we2=$we->getPartner();
					}
					else 
					{
						$we1=$we->getPartner();
						$we2=$we;
					}
					
					if($wez->getModerator()==$_SESSION['login'] || $user->CzyAdmin($_SESSION['login']))		//moderator lub admin
					{
						if(!$baza->dodajRodzicow($we1, $we2, $_GET['id'], $_SESSION['login']))
							echo '<p class="blad">Nie udało się dodać rodziców</p>';
						else
							unset($_GET['form']);
					}
					else
					{
						if(!$baza->wyslijDoAkceptacji($we->getId(), 0, $wez->getId()))
							echo '<p class="blad">Nie udało się wysłać propozycji dodania rodziców</p>';
						else
						{
							echo '<p class="sukces">Elementy będą dodane po akceptacji przez użytkownika: '.$wez->getModerator().'</p>';
							unset($_GET['form']);
						}
					}
				}
				else
				{
					if(($bledy=$formularz->waliduj())!==true)				//sprawdzenie poprawności danych
						echo $bledy.$formularz->generujFormularz();
					else																						//Dane poprawne, wykonanie akcji
					{
						$osoby=$formularz->zwrocOsobe();
						$we1=new Wezel(-1, null, $_SESSION['login'], $osoby[0]);
						$we2=new Wezel(-1, null, $_SESSION['login'], $osoby[1]);
							
						if($wez->getModerator()==$_SESSION['login'] || $user->CzyAdmin($_SESSION['login']))		//moderator lub admin
						{
							if(!$baza->dodajRodzicow($we1, $we2, $_GET['id'], $_SESSION['login']))
								echo '<p class="blad">Nie udało się dodać rodziców</p>';
							else
								unset($_GET['form']);
						}
						else
						{
							$idNowy=$baza->dodajWezel($we1);
							if($idNowy)
							{
								$baza->dodajPartnera($we2, $idNowy, $_SESSION['login']);
								if(!$baza->wyslijDoAkceptacji($idNowy, 0, $wez->getId()))
									echo '<p class="blad">Nie udało się wysłać propozycji dodania dziecka</p>';
								else
								{
									echo '<p class="sukces">Element będzie dodany po akceptacji przez użytkownika: '.$wez->getModerator().'</p>';
									unset($_GET['form']);
								}
							}
						}
					}
				}
				
			}
		}
		else 
			echo '<p class="blad">Nie znaleziono węzła o podanym ID</p>';
	}
	
	else if($_GET['form']=='edytujWezel')
	{
		$wez=$baza->zwrocWezel($_GET['id']);
		if($wez->getModerator()!=$_SESSION['login'] && !$user->CzyAdmin($_SESSION['login']))	//sprawdzenie dostępu
		{
			echo '<p class="blad">Brak dostępu</p>';
		}
		else if($wez!==null)
		{
			//przypisanie danych początkowych
			$nazwaFormularza='Edycja danych';
			$przycisk='Edytuj';
				
			//tworzenie formularza
			$formularz=new Formularz(0, '?tree&form=edytujWezel&id='.$_GET['id'], $przycisk, '?tree&id='.$_GET['id'], $_POST, $wez->getOsoba(), $nazwaFormularza, null, null, null, true);
			$formularz->setMinRok($wez->getOsoba()->getRokUr());
			$formularz->setMaxRok($wez->getOsoba()->getRokUr()+100);
			if(isset($_POST['zaladuj_zdjecie']))
			{	
				if(!isset($_POST['wyslij']))
				{
					$formularz=new Formularz(0, '?tree&form=edytujWezel&id='.$_GET['id'], $przycisk, '?tree&id='.$_GET['id'], null, $wez->getOsoba(), $nazwaFormularza, null, null, null, true);
					$formularz->setMinRok($wez->getOsoba()->getRokUr());
					$formularz->setMaxRok($wez->getOsoba()->getRokUr()+100);
				}
				include 'klasy/zn.php';
				$zdjecie = new zapis_plikow();
				$zdjecie->zapisz($wez->getId());
				echo $formularz->generujFormularz();
			}
			else if(!isset($_POST['wyslij']))								//Pierwsze wywołanie formularza
				echo $formularz->generujFormularz();
			else 														//odebrano dane z formularza
			{
				if(($bledy=$formularz->waliduj())!==true)				//sprawdzenie poprawności danych
					echo $bledy.$formularz->generujFormularz();
				else																						//Dane poprawne, wykonanie akcji
				{
					$os=$formularz->zwrocOsobe();
					$we=new Wezel($_GET['id'], null, $wez->getModerator(), $os);
						
					if(!$baza->edytujWezel($we, $_SESSION['login']))
						echo '<p class="blad">Nie udało się edytować danych</p>';
					else
						unset($_GET['form']);
				}
			}
		}
		else
			echo '<p class="blad">Nie znaleziono węzła o podanym ID</p>';
	}
}

if(!isset($_GET['form']))
{
	if(isset($_GET['id']))
	{
		$drzewo=new Drzewo($_GET['id']);
		echo $drzewo->naHtml($_SESSION['login']);
	}
	else
	{
		$baza=new BazaDanych();
		$drzewo=new Drzewo($baza->zwrocIdWezlaUzytkownika($_SESSION['login']));
		echo $drzewo->naHtml($_SESSION['login']);
	}
}

?>